package com.ruoyi.user.domain;
import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;

import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 用户对象 t_user
 * 
 * @author DEREK
 * @date 2023-05-10
 */
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("t_user")
public class User
{

    /** 主键ID */
	@TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /** 昵称 */
    @Excel(name = "昵称")
    private String nickName;

    /** 只能是手机号码登陆 */
    @Excel(name = "只能是手机号码登陆")
    private String phone;

    /** 1-启用,2=禁用,3=虚拟用户重新注册 4=注销 5=后端审核兴趣去掉一个虚拟号 6=20230228去掉虚拟用户 */
    @Excel(name = "1-启用,2=禁用,3=虚拟用户重新注册 4=注销 5=后端审核兴趣去掉一个虚拟号 6=20230228去掉虚拟用户")
    private Integer enabled;

    /** 头像地址 */
    @Excel(name = "头像地址")
    private String headPic;

    /** 基本信息完善的标志(0 未完善 1用户完善 2陪玩完善) */
    @Excel(name = "基本信息完善的标志(0 未完善 1用户完善 2陪玩完善)")
    private Integer baseInfoComplete;

    /** 是否VIP(0 普通会员 1VIP) */
    @Excel(name = "是否VIP(0 普通会员 1VIP)")
    private Integer vip;

    /** VIP级别 5、10、15、20/30 */
    @Excel(name = "VIP级别 5、10、15、20/30")
    private Integer vipLevel;

    /** 年龄 */
    @Excel(name = "年龄")
    private Integer age;

    /** 'M':男 ，‘F’：女 */
    @Excel(name = "'M':男 ，‘F’：女")
    private String sex;

    /** 身份证号 */
    @Excel(name = "身份证号")
    private String idCard;

    /** 姓名 */
    @Excel(name = "姓名")
    private String name;

    /** 头像 */
    @Excel(name = "头像")
    private Integer avatarAttachmentId;

    /** 生日
            9999/12/31 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "生日9999/12/31", width = 30, dateFormat = "yyyy-MM-dd")
    private Date birthday;

    /** 星座(根据生日生成) */
    @Excel(name = "星座(根据生日生成)")
    private String constellation;

    /** 身高 */
    @Excel(name = "身高")
    private String height;

    /** 体重 */
    @Excel(name = "体重")
    private String bodyWeight;

    /** 注册时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "注册时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date registerTime;

    /** 真人认证(0 未认证 1已认证) */
    @Excel(name = "真人认证(0 未认证 1已认证)")
    private Integer realPersonAuth;

    /** 登陆时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "登陆时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date loginTime;

    /** 登陆状态0：online 在线、1：offline 离线、2：logout 登出 */
    @Excel(name = "登陆状态0：online 在线、1：offline 离线、2：logout 登出")
    private Long loginStatus;

    /** 登陆点所在经度 */
    @Excel(name = "登陆点所在经度")
    private BigDecimal loginPointX;

    /** 登陆点所在维度 */
    @Excel(name = "登陆点所在维度")
    private BigDecimal loginPointY;

    /** 登陆城市代码 */
    @Excel(name = "登陆城市代码")
    private Integer loginCityCode;

    /** 登陆城市名称 */
    @Excel(name = "登陆城市名称")
    private String loginCityName;

    /** 登出时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "登出时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date loginOutTime;

    /** 客户端版本 */
    @Excel(name = "客户端版本")
    private String clientVersion;

    /** 用户类型0=正常用户 1=虚拟用户 */
    @Excel(name = "用户类型0=正常用户 1=虚拟用户")
    private Integer userType;

    /** mac地址 */
    @Excel(name = "mac地址")
    private String macAddress;

    /** 设备名称 */
    @Excel(name = "设备名称")
    private String deviceName;

    /** 注销类型 */
    @Excel(name = "注销类型")
    private String logoutType;

    /** 注销原因 */
    @Excel(name = "注销原因")
    private String logoutContent;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Integer isOfficial;

    /** 语音介绍 */
    @Excel(name = "语音介绍")
    private String voice;

    /** 视频介绍 */
    @Excel(name = "视频介绍")
    private String video;

    /** 学历 */
    @Excel(name = "学历")
    private String education;

    /** 0=不保密 1=保密 距离 */
    @Excel(name = "0=不保密 1=保密 距离")
    private Integer secrecy;

    /** 置顶卡顺序 */
    @Excel(name = "置顶卡顺序")
    private Integer topCard;

    /** 礼物总数 */
    @Excel(name = "礼物总数")
    private Integer giftCount;

    /** 发布技能的最低金额 */
    @Excel(name = "发布技能的最低金额")
    private BigDecimal amount;

    /** 置顶卡发布时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "置顶卡发布时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date topTime;

    /** 置顶结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "置顶结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date topEnd;

    /** 是否隐藏访问记录 0=否 1=是 */
    @Excel(name = "是否隐藏访问记录 0=否 1=是")
    private Integer hideView;

    /** 技能服务时长 */
    @Excel(name = "技能服务时长")
    private BigDecimal serverTime;

    /** 兴趣爱好 */
    @Excel(name = "兴趣爱好")
    private String interest;

    /** 平台公告 1=开启 0=关闭 */
    @Excel(name = "平台公告 1=开启 0=关闭")
    private Integer notice;

    /** 订单消息 1=开启 0=关闭 */
    @Excel(name = "订单消息 1=开启 0=关闭")
    private Integer orderMsg;

    /** 苹果用户收入超过5元发送短信 0=未发送 1=已发送 */
    @Excel(name = "苹果用户收入超过5元发送短信 0=未发送 1=已发送")
    private Integer shortMsg;

    /** 支付宝用户唯一ID */
    @Excel(name = "支付宝用户唯一ID")
    private String alipayUserId;

    /** 是否加入繁星计划 0=否 1=是 */
    @Excel(name = "是否加入繁星计划 0=否 1=是")
    private Integer isPlan;

    /** 繁星计划加入时间 最低3个月 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "繁星计划加入时间 最低3个月", width = 30, dateFormat = "yyyy-MM-dd")
    private Date planTime;

    /** 用户个性标签 */
    @Excel(name = "用户个性标签")
    private String userTag;

    /** 上线通知(铂金-钻石)VIP独享 1=开启 0=关闭 */
    @Excel(name = "上线通知(铂金-钻石)VIP独享 1=开启 0=关闭")
    private Integer onlineNotice;

    /** 是否隐身 用于守护榜 0=否 1=是 */
    @Excel(name = "是否隐身 用于守护榜 0=否 1=是")
    private Integer isStealth;

    /** 是否赠送礼物个人主页标签 1=展示 0=不展示 */
    @Excel(name = "是否赠送礼物个人主页标签 1=展示 0=不展示")
    private Integer isGift;

    /** 我喜欢的标签 */
    @Excel(name = "我喜欢的标签")
    private String lable;

    /** 职业 */
    @Excel(name = "职业")
    private String professional;

    /** 当日聊天次数 */
    @Excel(name = "当日聊天次数")
    private Integer chatCount;

    /** 当日邀约次数 */
    @Excel(name = "当日邀约次数")
    private Integer inviteCount;

    /** 解锁微信次数 */
    @Excel(name = "解锁微信次数")
    private Integer unlockWechat;
    
    @Excel(name = "微信号")
    private String wechat;

    /** 进入平台方式
	0=无诱导页面
	1=有诱导页
	2=7天体验卡
	3=真人认证进入平台
     */
    private Integer goWay;

    /** 曝光使用时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "曝光使用时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date exposureTime;

    /** 修改手机号码描述 */
    @Excel(name = "修改手机号码描述")
    private String updatePhone;

    /** 是否在首页显示 1=显示 0=不显示 */
    @Excel(name = "是否在首页显示 1=显示 0=不显示")
    private Integer isDisplay;

    /** 后台展示的真实年龄 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "后台展示的真实年龄", width = 30, dateFormat = "yyyy-MM-dd")
    private Date backBirthday;

    /** 注册选择的兴趣code */
    @Excel(name = "注册选择的兴趣code")
    private String inteCode;

    private String virtuallyStatus; // 虚拟状态
    
    /** 注册选择的兴趣name */
    @Excel(name = "注册选择的兴趣name")
    private String inteName;
    private BigDecimal price; // 连麦价格
    private Integer isChoose; // 是否首页精选 0=否 1=是
    private Integer virtuallyDistance; // 虚拟距离
    private Integer messageCount; // 发送消息次数/VIP不限制
    
    private Date updateTime;
    private String signature;// 个性签名
    private Date vipExpireTime;
    private String idCardFront;// 身份证正面
	private String idCardBack; // 身份证反面
	private String certificate; // 咨询师证书
	private Integer isConsultantAuth; // 咨询师认证审核是否通过 0=审核中 1=审核通过 2=审核拒绝
	private String refuseReason; // 拒绝理由
	private String refuseRemark; // 拒绝备注，后台管理员使用
	private String serviceType; // 服务类型 多个用逗号分隔
	private Integer isBusy; // 是否忙碌 0=否 1=是
	private Integer isCustomer;	// 是否客服 0=否 1=是
	
	@TableField(exist = false)
	private BigDecimal totalAmount = BigDecimal.ZERO; // 账户余额
	@TableField(exist = false)
	private BigDecimal incomeAmount = BigDecimal.ZERO; // 收益余额
	@TableField(exist = false)
	private BigDecimal waitAmount = BigDecimal.ZERO; // 待提现金额
	@TableField(exist = false)
	private BigDecimal canAmount = BigDecimal.ZERO; // 可提现金额
	@TableField(exist = false)
	private String remark; // 账户余额、收益余额 变动说明，推送给用户的消息
	@TableField(exist = false)
	private String emUsername; // 环信账号
	
	private String password;
	private Integer isYoung;
	private String youngPwd;
	private String detailAddress;
	private Long manageId;
	private String manageName;
	@TableField(exist = false)
	private Integer manageType = 0;
	private Integer weekType;
	@TableField(exist = false)
	private String weekStr;
}
